package com.controller;

import com.bean.StudentBean;
import com.bean.StudentList;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping(value ="/student") //处理url的
public class ParmController {

    /*
    * @RequestMapping: 做路径映射的，
    * 它可以用在两个地方    1 类上 ： 表示上一层路径 让你如： /student/test1
    *                    2 方法上  表示处理的路径 /test1
    *   value和path  同一个作用
    *   methed: 表示请求的方式
    *   params:表示请求是需要携带一个参数（很少用）  --@requestParm 替换
    *
    *  servletApi的方式获得
    * */
    @RequestMapping(value ="/test1",method = RequestMethod.GET,params = {"username","pwd"})
    public String  test1(HttpServletRequest request){
        System.out.println("test1=======>>");

        String  name = request.getParameter("username");
        String  pwd = request.getParameter("pwd");

        System.out.println(name+"   "+pwd);

        return "hello";
    };

    /**
     *   如果客户端传递的参数名与  控制器中的参数名字相同 则会自动映射
     *  当客户端穿过来的参数于控制器的参数不一样时 可以使用@RequestParam()来进行映射
     *
     *   @RequestParam   value 映射的名字
     *                  defaultValue: 默认值
     *                  required = true 标识该参数为也必须参数
     */
    @RequestMapping(value ="/test2")
    public String  test2(@RequestParam(value = "name",defaultValue ="springMvc",required = true) String username,String password){
        System.out.println("test2=======>>");
        System.out.println(username+"   "+password);
        return "hello";
    }


    @RequestMapping(value ="/test3")
    public String  test3(){
        System.out.println("test3=======>>");
        return "hello";
    }

    /**
     *
     * 获得参数 被封装对象
     *  参数的键名 必须和属性的属性名一样
     **/
    @RequestMapping("/add")
    public String addStudent(StudentBean studentBean, Model model){

        System.out.println(studentBean);

        model.addAttribute("studentInfo",studentBean);

        return "hello";
    }

    /**
     *
     * 如果要封装为一个集合  则表单时中的name的属性的值
     * 必须为StudentList 对象中的 集合属性的名字一样
     *
     *
     */
    @RequestMapping("/addPathch")
    public String addPatch(StudentList studentList,Model model){

        System.out.println("addPatch====>>>");

        System.out.println(studentList.getStudentBeanList());

        model.addAttribute("studentList",studentList.getStudentBeanList());

        return "hello";
    }
}
